﻿using CheccConicalSlope;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CheccCoverplateCulvertAssemble.Common.Total
{
    public class CommonDropWell : MyNotifyPropertyChanged
    {
        
        public CommonDropWell() { }
        DropWellBase _leftDropWell = new DropWellBase();
        DropWellBase _rightDropWell = new DropWellBase();

        /// <summary>
        /// 左侧跌水井
        /// </summary>
        public DropWellBase LeftDropWell
        {
            get
            {
                return _leftDropWell;
            }
            set
            {
                if (value == _leftDropWell)
                    return;
                _leftDropWell = value;
                NotifyPropertyChanged(() => LeftDropWell);
            }
        }

        /// <summary>
        /// 右侧跌水井
        /// </summary>
        public DropWellBase RightDropWell
        {
            get
            {
                return _rightDropWell;
            }
            set
            {
                if (value == _rightDropWell)
                    return;
                _rightDropWell = value;
                NotifyPropertyChanged(() => RightDropWell);
            }
        }
    }

    public class DropWellBase : MyNotifyPropertyChanged
    {
        public double _centerLength;
        public double _deep;
        public double _wellSlope;
        public double _height;
        public double _depthOfDrainageDitch;
        public double _slopOfDrainageDitch;
        public double _slope;
        public double _slopInsideDitch;
        public double _slopOutsideDitch;
        public double _gutterPavingLength;
        public double _precisionPavingHeight;
        public double _inletSlop;
        public double _sandPitDepthSwim;
        public DropWellBase() { }

        public DropWellBase(
            double CenterLength,
            double Deep,
            double WellSlope,
            double Height,
            double DepthOfDrainageDitch,
            double SlopOfDrainageDitch,
            double Slope,
            double SlopInsideDitch,
            double SlopOutsideDitch,
            double GutterPavingLength,
            double PrecisionPavingHeight,
            double InletSlop,
            double SandPitDepthSwim)
        { 
            _centerLength = CenterLength;
            _deep = Deep;
            _wellSlope = WellSlope;
            _height = Height;
            _depthOfDrainageDitch = DepthOfDrainageDitch;
            _slopOfDrainageDitch = SlopOfDrainageDitch;
            _slope = Slope;
            _slopInsideDitch = SlopInsideDitch;
            _slopOutsideDitch = SlopOutsideDitch;
            _gutterPavingLength = GutterPavingLength;
            _precisionPavingHeight = PrecisionPavingHeight;
            _inletSlop = InletSlop;
            _sandPitDepthSwim = SandPitDepthSwim;
        }

        #region 跌水井属性
        /// <summary>
        /// 跌井中心长度
        /// </summary>
        public double CenterLength
        {
            get
            {
                return _centerLength;
            }
            set
            {
                if (value == _centerLength)
                    return;
                _centerLength = value;
                NotifyPropertyChanged(() => CenterLength);
            }
        }
        /// <summary>
        /// 跌井深度
        /// </summary>
        public double Deep
        {
            get
            {
                return _deep;
            }
            set
            {
                if (value == _deep)
                    return;
                _deep = value;
                NotifyPropertyChanged(() => Deep);
            }
        }
        /// <summary>
        /// 井壁坡度
        /// </summary>
        public double WellSlope
        {
            get
            {
                return _wellSlope;
            }
            set
            {
                if (value == _wellSlope)
                    return;
                _wellSlope = value;
                NotifyPropertyChanged(() => WellSlope);
            }
        }
        /// <summary>
        /// 井深铺砌厚度
        /// </summary>
        public double Height
        {
            get
            {
                return _height;
            }
            set
            {
                if (value == _height)
                    return;
                _height = value;
                NotifyPropertyChanged(() => Height);
            }
        }
        /// <summary>
        /// 排水沟深度
        /// </summary>
        public double DepthOfDrainageDitch
        {
            get
            {
                return _depthOfDrainageDitch;
            }
            set
            {
                if (value == _depthOfDrainageDitch)
                    return;
                _depthOfDrainageDitch = value;
                NotifyPropertyChanged(() => DepthOfDrainageDitch);
            }
        }
        /// <summary>
        /// 排水沟边坡宽
        /// </summary>
        public double SlopOfDrainageDitch
        {
            get
            {
                return _slopOfDrainageDitch;
            }
            set
            {
                if (value == _slopOfDrainageDitch)
                    return;
                _slopOfDrainageDitch = value;
                NotifyPropertyChanged(() => SlopOfDrainageDitch);
            }
        }
        /// <summary>
        /// 跌井边坡坡比(1:n)
        /// </summary>
        public double Slope
        {
            get
            {
                return _slope;
            }
            set
            {
                if (value == _slope)
                    return;
                _slope = value;
                NotifyPropertyChanged(() => Slope);
            }
        }
        /// <summary>
        /// 边沟内坡度
        /// </summary>
        public double SlopInsideDitch
        {
            get
            {
                return _slopInsideDitch;
            }
            set
            {
                if (value == _slopInsideDitch)
                    return;
                _slopInsideDitch = value;
                NotifyPropertyChanged(() => SlopInsideDitch);
            }
        }
        /// <summary>
        /// 边沟外坡度
        /// </summary>
        public double SlopOutsideDitch
        {
            get
            {
                return _slopOutsideDitch;
            }
            set
            {
                if (value == _slopOutsideDitch)
                    return;
                _slopOutsideDitch = value;
                NotifyPropertyChanged(() => SlopOutsideDitch);
            }
        }
        /// <summary>
        /// 排水沟铺砌长
        /// </summary>
        public double GutterPavingLength
        {
            get
            {
                return _gutterPavingLength;
            }
            set
            {
                if (value == _gutterPavingLength)
                    return;
                _gutterPavingLength = value;
                NotifyPropertyChanged(() => GutterPavingLength);
            }
        }
        /// <summary>
        /// 井底铺砌高度
        /// </summary>
        public double PrecisionPavingHeight
        {
            get
            {
                return _precisionPavingHeight;
            }
            set
            {
                if (value == _precisionPavingHeight)
                    return;
                _precisionPavingHeight = value;
                NotifyPropertyChanged(() => PrecisionPavingHeight);
            }
        }
        /// <summary>
        /// 进口开挖坡度
        /// </summary>
        public double InletSlop
        {
            get
            {
                return _inletSlop;
            }
            set
            {
                if (value == _inletSlop)
                    return;
                _inletSlop = value;
                NotifyPropertyChanged(() => InletSlop);
            }
        }
        /// <summary>
        /// 沉砂池深度
        /// </summary>
        public double SandPitDepthSwim
        {
            get
            {
                return _sandPitDepthSwim;
            }
            set
            {
                if (value == _sandPitDepthSwim)
                    return;
                _sandPitDepthSwim = value;
                NotifyPropertyChanged(() => SandPitDepthSwim);
            }
        }
        #endregion
    }
}
